# BankAPI

**Порты**

-8765 - Gateway

-8081 - Клиент

-8082 - Сервис

**Контроллеры**

- **Сервис:**

    - @RequestMapping("/service")

    - @PostMapping("/start") – запуск потока добавляющий 5 % к балансу всех аккаунтов согласно условию

    - @GetMapping("/all") – Вывод всех аккаунтов в базе

    - @PostMapping("/new") – Создание нового аккаунта с параметрами заданными в теле запроса

    - @DeleteMapping("/delete/{id}") – Удаление аккаунта по id переданного в запросе

    - @GetMapping("/filter/phone/{phoneNumber}") – поиск аккаунтов с номером телефона идентичным переданному в запросе

    - @GetMapping("/filter/age/{birthdate}") – поиск аккаунтов, “где дата рождения больше чем переданный в запросе”

    - @GetMapping("/filter/email/{email}") – поиск аккаунтов с почтой идентичной, переданной в запросе

    - @GetMapping("/filter/name") - поиск аккаунтов с ФИО идентичному переданному в параметре 

- **Клиент:**

    - @RequestMapping("/user")

    - @GetMapping("/balance/{id}") – вывод баланса аккаунта с заданным в запросе id

    - @PutMapping("/edit/phone/{id}/{newPhoneNumber}/{password}") – изменение номера телефона с данными заданными в запросе

    - @PutMapping("/edit/email/{id}/{newEmail}/{password}") – изменение почты с данными 
    - @PutMapping("/edit/extra/phone/{id}/{newPhoneNumber}/{password}") – изменение дополнительного номера телефона с данными переданными в запросе
    - @PutMapping("/edit/extra/email/{id}/{newEmail}/{password}") – изменение дополнительной почты с данными заданными в запросе

    - @DeleteMapping("/delete/phone/{id}/{password}") – удаление дополнительного номера телефона по id заданному в запросе

    - @DeleteMapping("/delete/email/{id}/{password}") – удаление почты с id заданному в запросе

    - @PostMapping("/new/phone/{id}/{newPhoneNumber}/{password}") – добавление дополнительного номера телефона с данными из запроса

    - @PostMapping("/new/email/{id}/{newEmail}/{password}") – добавление дополнительно почты с данными из запроса

    - @GetMapping("/filter/phone/{phoneNumber}") – поиск аккаунтов с номером телефона идентичным переданному в запросе
    - @GetMapping("/filter/age/{birthdate}") – поиск аккаунтов, “где дата рождения больше чем переданный в запросе”

    - @GetMapping("/filter/email/{email}") – поиск аккаунтов с почтой идентичной, переданной в запросе

    - @GetMapping("/filter/name") - поиск аккаунтов с ФИО идентичному переданному в параметре

    - @PostMapping("/transfer") – Передача денежных средств с данными в теле запроса

**Конфиг безопасности:** прописана конфигурация, согласно которой клиент авторизуется перед использованием. У Сервиса по условия авторизация не требуется


**Аспект:** работает у методов с аннотацией “TrackUserAction” и выводит некоторое логирование в консоль

**TODO:**

-Добавить сваггер

-Добавить тесты

-Изменить аунтефикацию на аунтификацию с jwt

-Добавить валидацию
